Describing a language editor can be repetitive, for instance when you have to define expressions. expression '+' expression
and expression '*' expression
is a typical example. From the grammar file that describes the language structure it's possible to recognize repetitive rule structures and build an editor in a consistent way.
The PE project defines a grammar and generates AST in a way not related to any projectional editor. PE4MPS project imports the generated ASTs into MPS generating for example from this rule:
Graph:
strict=STRICT? type=GraphType name=string?
statementList<indentList('{', '}')>=Statement*
;
this MPS editor: